﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters;

namespace Ruandao
{
    /// <summary>
    /// 安全异常。一般在业务对象中发现非授权的访问时抛出该异常。
    /// 通常，应该根据用户的权限来提供合适的界面，因而不应该发生该类
    /// 异常。
    /// 除非用户界面的编写没有全面根据用户的权限来定制，否则，捕获该
    /// 异常可能说明系统被有意识的攻击。因此，在异常中应该记录有助于
    /// 反攻击的信息。
    /// </summary>
    [Serializable]
    public class SecurityException
        : Exception, ISerializable
    {
        /// <summary>
        /// 默认构造。
        /// </summary>
        public SecurityException()
            :base()
        { }

        /// <summary>
        /// 构造指定消息的异常。
        /// </summary>
        /// <param name="message">异常消息。</param>
        public SecurityException(string message)
            : base(message)
        { }

        /// <summary>
        /// 构造异常，指定异常信息和引发该异常的内部异常。
        /// </summary>
        /// <param name="message">异常信息。</param>
        /// <param name="inner">内部异常。</param>
        public SecurityException(string message, Exception inner)
            : base(message, inner)
        { }

        private SecurityException(SerializationInfo info, StreamingContext context)
            : base(info, context)
        { }

        void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
        {
            base.GetObjectData(info, context);
        }
    }
}
